package estadistec.logica.dependencias;

/** 
 * Una interfaz para las clases involucradas en la búsqueda de Nodos. 
 * Consta de dos métodos: {@code buscarRaiz} es el método ascendente, y
 * {@code buscarNodo} el método descendente.
 */
public interface IBuscarNodo {

	/** 
	 * Busca la raíz en la expresión dada en los nombres.
	 * 
	 * @param nombres Nombres de los que gestionan el nodo.
	 * @param nivel Nivel de búsqueda actual. Si es cero quiere
	 * decir que se encuentra en la raíz.
	 * 
	 * @return El nodo solicitado o {@code null} en caso de que no
	 * se encuentre.
	 */
	public Nodo buscarRaiz(String[] nombres, int nivel);

	/** 
	 * Busca el nodo en la expresión dada en los nombres.
	 * 
	 * @param nombres Nombres de los que gestionan el nodo.
	 * @param nivel Nivel de búsqueda actual. Si es el nivel es 
	 * {@code nombres.length - 2} quiere decir que se encuentra en el 
	 * gestor en donde se debería de localizar el Nodo. El nivel
	 * corresponde al índice de nombres que se debe buscar en el 
	 * lugar actual.
	 * 
	 * @return El nodo solicitado o {@code null} en caso de que no
	 * se encuentre.
	 */
	public Nodo buscarNodo(String[] nombres, int nivel);
}
